home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- import struct
- from g import *
- TYPE_T_MIME = 1
- TYPE_T_URI = 2
- DIME_VERSION = 1
- PAD_SIZE = 4
-
- class Record(object):
-
- def __init__(self, id, typ, typ_code, payload):
- self.id = id
- self.typ = typ
- self.typ_code = typ_code
- self.payload = payload
-
-
-
- class Message(object):
-
- def __init__(self):
- self.records = []
-
-
- def add_record(self, rec):
- self.records.append(rec)
-
-
- def generate(self, output):
- for i, r in enumerate(self.records):
- log.debug('Processing record %d (%s)' % (i, r.id))
- mb = me = cf = 0
- if i == 0:
- mb = 1
-
- if i == len(self.records) - 1:
- me = 1
-
- output.write(struct.pack('!B', (DIME_VERSION & 31) << 3 | (mb & 1) << 2 | (me & 1) << 1 | cf & 1))
- output.write(struct.pack('!B', (r.typ_code & 15) << 4 & 240))
- output.write(struct.pack('!H', 0))
- id_len = self.bytes_needed(len(r.id))
- output.write(struct.pack('!H', len(r.id)))
- typ_len = self.bytes_needed(len(r.typ))
- output.write(struct.pack('!H', len(r.typ)))
- data_len = self.bytes_needed(len(r.payload))
- output.write(struct.pack('!I', len(r.payload)))
- if id_len:
- output.write(struct.pack('%ds' % id_len, r.id))
-
- if typ_len:
- output.write(struct.pack('%ds' % typ_len, r.typ))
-
- if data_len:
- output.write(struct.pack('%ds' % data_len, r.payload))
- continue
-
-
-
- def bytes_needed(self, data_len, block_size = PAD_SIZE):
- if data_len % block_size == 0:
- return data_len
- return (data_len / block_size + 1) * block_size
-
-
- if __name__ == '__main__':
- log.set_level('debug')
- import cStringIO
- m = Message()
- m.add_record(Record('cid:id0', 'http://schemas.xmlsoap.org/soap/envelope/', TYPE_T_URI, '<test>test</test>'))
- m.add_record(Record('test2', 'text/xml', TYPE_T_MIME, '<test>test2</test>'))
- output = cStringIO.StringIO()
- m.generate(output)
- log.log_data(output.getvalue())
-
-